package LearnAlgorithm.f_字符串;

public class i删除单个字符串中出现k次的0 {
	public static void main(String[] args) {
		String string = "abc000defg0000hijkl00000";
//		System.out.println(removeApi(string, 3));
		System.out.println(removeByMy(string, 3));
	}
	
	public static String removeApi(String string, int k) {
		String regex = "0{" + k + "}";//定义正则表达式，0{3}代表连续的3个0
		return string.replaceAll(regex, "");//参数1正则表达式，参数2替换上的字符
	}
	
	public static String removeByMy(String string, int k) {
		char[] charArray = string.toCharArray();
		int count = 0;
		StringBuilder stringBuilder = new StringBuilder();
		for (int i = 0; i < charArray.length; i++) {//遍历字符数组
			if (charArray[i] == '0') {//判断是否为0
				count++;//通过；更新count次数
			} else {
				for (int j = 0; j < count % k; j++) {//未通过；代表遇上了非0字符；根据count%3的结果追加字符0
					stringBuilder.append('0');//000会被删除；0000会成为0；00000会变成00；懂我的意思了没？
				}
				stringBuilder.append(charArray[i]);
				count = 0;//重置count
			}
		}
		for (int j = 0; j < count % k; j++) {//如果字符串有很多0；上面的循环中不会被处理；这里补上处理
			stringBuilder.append('0');//000会被删除；0000会成为0；00000会变成00；懂我的意思了没？
		}
		return stringBuilder.toString();
	}
}
